#include "StdAfx.h"
#include "EntityController.h"
#include "EntityEvents.h"
#include "EntityManager.h"
#include "IEntity.h"
#include "../kernel.h"

extern Kernel* g_kernel;
#define TIME g_kernel->GetTime()

/**
=============================
Construct a controller object
registering the listener
=============================
*/
EntityController::EntityController(void) : IEventListener()
{
    m_entity = NULL;
    EventManager::GetInstance()->AddListener(this);
}

/**
=============================
Deconstructor - destroy
=============================
*/
EntityController::~EntityController(void)
{
    EventManager::GetInstance()->RemoveListener(this);
    IEventListener::~IEventListener();   
}


/** 
 *  Handle a giving event, switch the entities state
 *  based off the FSM 
 */
bool EntityController::HandleEvent( IEvent* e )
{
    switch( e->GetType() )
    {
    /*--- entity event ----*/
    case EVT_ENTITY:
        EntityEvents* evt = e->GetData<EntityEvents>();

        if ( m_entity->GetID() != evt->ent_id ) 
            return false;
        //if ( !m_entity->InputEnabled() )
        //    return false;

        m_entity->m_actions = evt->buttons;

    };
    return true;
}
